SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE PROC [dbo].[SP_TXMVTO_CNTB_I51]
/*-------------------------------------------------------------------*/                              
/*----- Empresa           : OFISIS S.A.                          ----*/                              
/*----- Cliente           : OFISIS S.A.                          ----*/                              
/*----- Sistema           : Contabilidad                         ----*/                              
/*----- Modulo            : Empresa                              ----*/                              
/*----- Programa          : Ajuste por Diferencia de cambio Docs(EN LINEA 'ORI') ----*/                              
/*----- Nombre            : SP_TXMVTO_CNTB_I32                   ----*/                              
/*----- Script            : TXMVTO_CNTB                          ----*/                              
/*----- Desarrollado por  : PDGV                                 ----*/                              
/*----- Fecha             :                                      ----*/                              
/*----- Base de Datos     : MS SQL Server                        ----*/                              
/*----- Version BD        : 8.0                                  ----*/                              
/*-------------------------------------------------------------------*/                              
/*-------------------------------------------------------------------*/                              
/*----- Modificado 1 por : Percy Garc?a                          ----*/                              
/*----- Fecha Modifica   : 26/11/2003                            ----*/                              
/*----- Detalle Modifica : Se bas? en el procedure de Nuevo Mundo,---*/                             
/*----- se hicieron cambios para que sea en l?nea                ----*/                              
/*----- Factor de cambio respecto fecha asto, graba status st_dife_camb ----*/                                               
/*----- graba s?lo secs para el asiento existente                ----*/                                               
/*-------------------------------------------------------------------*/                              
/*--------------------------------------------------------------------------*/        
/*---- Modificado 2   : Gustavo Espinoza                                ----*/        
/*---- Fecha Modificacion : 19/08/2005                                  ----*/        
/*---- Detalle    : Validacion ADC si el saldo del DOC <> 0             ----*/        
/*--------------------------------------------------------------------------*/ 
/*--------------------------------------------------------------------------*/        
/*---- Modificado 3   : PERCY GARCIA                                ----*/        
/*---- Fecha Modificacion : 10/03/2006                                  ----*/        
/*---- Detalle    : SE VALIDO QUE LA OPERACION CONTABLE NO PERTENEZCA A UNA PROVISION   
SOLO DEBE SER DE CANCELACION                                       ----*/        
/*--------------------------------------------------------------------------*/   
/*-------------------------------------------------------------------*/              
/*----- Modificado 4 por : PDGV                                   ----*/              
/*----- Fecha Modifica   : 23/06/2006                            ----*/              
/*----- Detalle Modifica : SE AUMENTO VALIDACION PARA QUE EN CASO DOCUMENTOS 
DE LEASING GENERE DIFERENCIA DE CAMBIO EN UN LIBRO DE PROVISION 
LA CONDICION ES PARA QUE GENERE DIF DE CAMBIO: 
NO EXISTE EN EL LIBRO DE REG DE COMPRAS O SI EXISTE 
QUE ESTE EN LA TABLA DE DOCUMENTOS LEASING        ----*/                                          
/*-------------------------------------------------------------------*/                              
/*----- Drop proc SP_TXMVTO_CNTB_I32                             ----*/ 
/*----- Grant all on SP_TXMVTO_CNTB_I32 to PUBLIC                ----*/                              
/*----- SP_TXMVTO_CNTB_I32                                                                    
EXEC SP_TXMVTO_CNTB_I32  '01',1,'001','002', '0000000040','42153','COM','10/21/2004', 10, 2004,                 
'P','20385345055', 'FAC', '0040-0000000003', 3                
----*/                              
/*-------------------------------------------------------------------*/                              
@ISCO_EMPR    TD_VC_002,      
@ISCO_USUA          TD_VC_008,      
@IDFE_USUA          TD_DT_001,      
@INNU_CNTB_EMPR      TD_IN_001_CONT,                              
@ISCO_UNID_CNTB      TD_VC_003,                              
@ISCO_OPRC_CNTB      TD_VC_003,                              
@ISNU_ASTO           TD_VC_010,                              
@ISCO_CNTA_EMPR      TD_VC_020_CNTA,                              
@ISST_CNTA_NATU      TD_VC_003,  -- 'COM' 0 'VEN'                            
@IDFE_ASTO_CNTB      TD_DT_001,                              
@INNU_MESE           TD_IN_002_MESE,                            
@INNU_ANNO           TD_IN_004_ANNO,                              
@ISTI_AUXI_EMPR      TD_VC_001,                              
@ISCO_AUXI_EMPR      TD_VC_020,                               
@ISTI_DOCU           TD_VC_003,                              
@ISNU_DOCU           TD_VC_020,                                
@INNU_SECU           TD_IN_002,           
@ISST_DIFE_MAYO      TD_VC_001                               
----           with encryption                           
As                              
Begin Transaction SP_TXMVTO_CNTB_I32                              
                              
Declare                               
 @VDFE_VOUC          TD_DT_001,                              
 @VDFE_CAMB          TD_DT_001,                              
 @CNIM_ORIG_SALD     TD_NU_016_004,         
 @CNIM_SOLE_SALD     TD_NU_016_004,                              
 @CSTI_DOCU          TD_VC_003,             
 @CSNU_DOCU          TD_VC_020,                              
 @CDFE_DOCU          TD_DT_001,                              
 @VNIM_ORIG_MVTO     TD_NU_016_004,                             
 @VNIM_SOLE_MVTO     TD_NU_016_004,                              
 @VNTO_SALD_ORIG     TD_NU_016_004,                    
 @VNTO_SALD_SOLES    TD_NU_016_004,                              
 @VNTO_AJUS          TD_NU_016_004,                              
 @VSCO_CNTA_GANA     TD_VC_020_CNTA,                              
 @VSCO_CNTA_PERD     TD_VC_020_CNTA,                              
 @VSTI_OPER          TD_VC_003,                              
 @VNTO_CNTA_GANA     TD_NU_016_004,                              
 @VNTO_CNTA_PERD     TD_NU_016_004,                              
 @VNTO_GANA_PEND     TD_NU_016_004,                              
 @VNTO_PERD_PEND     TD_NU_016_004,                              
 @VNNU_SECU          TD_IN_002,                               
 @VNNU_SECU_PEND     TD_IN_002,                               
 @VSCO_MONE_CNTB     TD_VC_003,                              
 @VDFE_DOCU          TD_DT_001,                              
 @CSTI_AUXI_EMPR     TD_VC_001,                              
 @CSCO_AUXI_EMPR     TD_VC_020,                              
 @VSID_GANA_CAMB     TD_VC_003,                              
 @VSID_PERD_CAMB     TD_VC_003,                              
 @VNFA_CMPR_REFE     TD_NU_015_006,                              
 @VNFA_VNTA_REFE     TD_NU_015_006,                              
 @VDFE_ASTO_CNTB   TD_DT_001,                              
 @VNFA_CAMB_DIAR     TD_NU_015_006,                              
 @VSST_CNTA          TD_VC_001,                              
 @VNFA_CMPR_CNTA     TD_NU_015_006,                              
 @VNFA_VNTA_CNTA     TD_NU_015_006,            
 @VNFA_CMPR_CNTB   TD_NU_015_006,                              
 @VNFA_VNTA_CNTB     TD_NU_015_006,                              
 @VSCO_MONE_CNTA     TD_VC_003,                              
 @VSCO_GANA_DIFE     TD_VC_020,                              
 @VSCO_PERD_DIFE     TD_VC_020,                              
 @VSCO_CNTA_AJUS     TD_VC_020, -- CUENTA SE ENVIA A PROC SP_TXMVTO_CNTB_I34 (GESTION)                             
 @VSST_AUXI_EMPR     TD_VC_001,                              
 @VSTI_AUXI_DCGA     TD_VC_001,                              
 @VSCO_AUXI_DCGA     TD_VC_020,                              
 @VSTI_AUXI_DCPE     TD_VC_001,                              
 @VSCO_AUXI_DCPE     TD_VC_020,                              
 @VSST_FLAG          TD_VC_001,                              
                              
---- Multimoneda                              
 @VSST_CNTA_CAMB     TD_VC_003,                              
 @VNIM_MVTO_ORI2     TD_NU_016_004,                              
 @VNFA_CAMB          TD_NU_015_006,                              
                              
 ---- Cursor CU_TXMVTO_CNTB_I10_2                              
 @CSCO_EMPR_0002     TD_VC_002,                              
 @CNNU_CNTB_EMP2     TD_IN_001_CONT,                      
 @VDFE_ASTO_CNT2     TD_DT_001,                              
 @CNTI_CAMB_0002     TD_VC_003,                              
 @CSCO_MONE_0002     TD_VC_003,                              
 @CNFA_CAMB_0002     TD_NU_015_006,                              
 @CSTI_OPER_0002     TD_VC_003,                              
 @CNIM_MVTO_ORI2     TD_NU_016_004,                              
 @CNIM_MVTO_CNT2     TD_NU_016_004,                              
 @CSTI_AUXI_EMP2     TD_VC_001,                              
 @CSCO_AUXI_EMP2     TD_VC_020,                              
 @CSTI_DOCU_0002     TD_VC_003,                              
 @CSNU_DOCU_0002     TD_VC_020,                                
 @CDFE_DOCU_0002     TD_DT_001,                               
 @CDFE_ASTO_0001     TD_DT_001,                          
----                           
 @VSID_DIFE          TD_VC_003,                          
 @VSID_0004          TD_VC_003,                         
 @VNIM_CARG          TD_NU_016_004,                                  
 @VNIM_ABON          TD_NU_016_004,                              
 @CDFE_DOCU_VENC     TD_DT_001 ,
--- CODIGOS DE OPERACION REG COMPRA Y VENTA    
 @VSID_COMP_0001        TD_VC_003,    
 @VSID_VENT_0001        TD_VC_003,  
 @VSCO_OPRC_EVAL        TD_VC_003,
 @VSCO_OPRC_COMP        TD_VC_003,
 @VSST_ORDE_SERV        TD_VC_001,
 @VSCO_ORDE_DCGA        TD_VC_020, @VSCO_ORDE_DCPE        TD_VC_020,
 @CSCO_ORDE_SER1        TD_VC_020,                    
 @CSCO_ORDE_SERV        TD_VC_020
                              
--- Inicializar-------------                              
                     
 Select @VSTI_AUXI_DCGA = Null                              
 Select @VSCO_AUXI_DCGA = Null                              
 Select @VSTI_AUXI_DCPE = Null                              
 Select @VSCO_AUXI_DCPE = Null                              
          
  ---------------------------                          
 -- saca saldo del documento                          
 ---------------------------                           
 Select @VSID_DIFE = ''                            
 Select @VSID_0004 = ''       
 Select @VSID_COMP_0001 = ''    
 Select @VSID_VENT_0001 = ''    
 Select @VSCO_OPRC_EVAL = ''  
                     
 Select Top 1 @VSID_DIFE = IsNull(Rtrim(ID_DIFE), ''), @VSID_0004 = IsNull(Rtrim(ID_0004), ''),  
 @VSID_COMP_0001 = IsNull(ID_COMP,''),  
 @VSID_VENT_0001 = IsNull(ID_VENT,'')  
 From TTCNTB_EMPR                             
 Where CO_EMPR = @ISCO_EMPR                             
 And NU_CNTB_EMPR = @INNU_CNTB_EMPR   

-- EVALUA SI LA OPERACION DEL ASIENTO ES LA PROVISION , EN CUYO CASO NO GENERA LAS LINEAS DE DIF DE CAMBIO  
-- SOLO DEBE GENERARSE EN LA CANCELACION  
 Select @VSCO_OPRC_EVAL = IsNull(Rtrim(t9.CO_OPRC_CNTB),'')   
 From TTIDEN_OPER t9    
 Where t9.CO_EMPR = @ISCO_EMPR    
 And t9.NU_CNTB_EMPR = @INNU_CNTB_EMPR  
 And t9.CO_OPRC_CNTB = @ISCO_OPRC_CNTB  
 And t9.ID_OPRC In ( @VSID_COMP_0001,@VSID_VENT_0001 )                            


 Select @VSCO_OPRC_COMP = ''
 Select @VSCO_OPRC_COMP = IsNull(T3.CO_OPRC_CNTB,'')  
 From TTIDEN_OPER T3, TTTIPO_COPA T4 
 Where T3.CO_EMPR = @ISCO_EMPR
 And T3.NU_CNTB_EMPR = @INNU_CNTB_EMPR  
 And T3.ID_OPRC IN ( @VSID_COMP_0001, @VSID_VENT_0001 )  
 And T3.CO_OPRC_CNTB = @ISCO_OPRC_CNTB
 AND T3.CO_EMPR = T4.CO_EMPR
 AND T4.TI_COMP_PAGO = @ISTI_DOCU

--SELECT * FROM TTTIPO_COPA

Select @VNIM_CARG = 0 
Select @VNIM_ABON = 0 
    /*                        
If 1=1--DataLength(IsNull(@VSCO_OPRC_EVAL,'')) = 0  Or DataLength(IsNull(@VSCO_OPRC_COMP,'')) > 0  
Begin
 -- NO TOMA EN CUENTA LA LINEA DE DIFERENCIA DE CAMBIO                            
Select @VNIM_CARG = IsNull( SUM( ( ROUND( ((ASCII(t1.TI_OPER)/67) * Isnull(t1.IM_MVTO_ORIG, 0)), 2))), 0),                            
 @VNIM_ABON = IsNull( SUM( ( ROUND( ((65/ASCII(t1.TI_OPER)) * Isnull(t1.IM_MVTO_ORIG, 0)), 2))), 0)                             
From TXMVTO_CNTB t1          
Where t1.CO_EMPR = @ISCO_EMPR                     
and t1.NU_CNTB_EMPR = @INNU_CNTB_EMPR                            
and t1.NU_ANNO  = @INNU_ANNO                            
and t1.NU_MESE  <= @INNU_MESE                            
and t1.CO_CNTA_EMPR = @ISCO_CNTA_EMPR                            
and t1.TI_AUXI_EMPR = @ISTI_AUXI_EMPR                            
and t1.CO_AUXI_EMPR = @ISCO_AUXI_EMPR                            
and t1.TI_DOCU = @ISTI_DOCU                        
and t1.NU_DOCU = @ISNU_DOCU                            
and t1.SI_MVTO_CNTB In ( 'APR', 'DIG')                            
And     Not Exists (Select t2.CO_EMPR From TTIDEN_OPER t2                            
   Where t2.CO_EMPR = @ISCO_EMPR                             
   And t2.NU_CNTB_EMPR = @INNU_CNTB_EMPR                             
   And t2.ID_OPRC In (@VSID_DIFE, @VSID_0004)                       
   And t2.CO_OPRC_CNTB = t1.CO_OPRC_CNTB )                            
End 
           */                 
 /* SOLO SE EFECTUA DIF DE CAMBIO EN LINEA SI ES QUE ES UNA CANCELACION TOTAL*/                          
 If 1=1 ---@VNIM_CARG - @VNIM_ABON  = 0 
--And ( DataLength(IsNull(@VSCO_OPRC_EVAL,'')) = 0  Or DataLength(IsNull(@VSCO_OPRC_COMP,'')) > 0  )
                          
Begin                           
                               
                              
  -- OBTIENE EL ULTIMO SECUENCIAL                               
                              
 Select @VNNU_SECU = IsNull(MAX(NU_SECU), 0) + 1                              
 From TXMVTO_CNTB                              
 Where CO_EMPR = @ISCO_EMPR                              
 And NU_CNTB_EMPR = @INNU_CNTB_EMPR                              
 And CO_UNID_CNTB = @ISCO_UNID_CNTB                                
 And CO_OPRC_CNTB = @ISCO_OPRC_CNTB                              
 And NU_ANNO      = @INNU_ANNO                              
 And NU_MESE      = @INNU_MESE                              
 And NU_ASTO      = @ISNU_ASTO                              
                            
                           
 /* Selecciona las cuenta de Ganacia y Perdida */                              
 Select @VSCO_MONE_CNTB = CO_MONE,                              
        @VSID_GANA_CAMB = ID_GANA_CAMB,                              
        @VSID_PERD_CAMB = ID_PERD_CAMB                               
 From TTCNTB_EMPR                              
 Where CO_EMPR = @ISCO_EMPR                              
 and NU_CNTB_EMPR = @INNU_CNTB_EMPR                              

Select @VSCO_ORDE_DCPE = NULL
Select @VSCO_ORDE_DCGA = NULL
         
 Select @VSST_AUXI_EMPR = 'N'                              
 Select @VSST_ORDE_SERV = 'N'                              
 Select @VSCO_CNTA_GANA = t1.CO_CNTA_EMPR,                              
        @VSST_AUXI_EMPR = t2.ST_AUXI_EMPR,
        @VSST_ORDE_SERV = t2.ST_ORDE_SERV 
 From TTIDEN_CNTA t1, TMPLAN_ANNO t2                              
 Where t1.CO_EMPR = @ISCO_EMPR                               
 And t1.NU_CNTB_EMPR = @INNU_CNTB_EMPR                               
 And t1.ID_CNTA = @VSID_GANA_CAMB                              
 And t2.CO_EMPR = t1.CO_EMPR                              
 And t2.CO_CNTA_EMPR = t1.CO_CNTA_EMPR                              
                              
 If @VSST_AUXI_EMPR = 'S'                              
   Begin                              
     Select @VSTI_AUXI_DCGA = NullIf(Rtrim(TI_AUXI_DCGA), ''),         
     @VSCO_AUXI_DCGA = NullIf(Rtrim(CO_AUXI_DCGA), '')                              
     From   TMPARA_CONT                              
     Where  CO_EMPR = @ISCO_EMPR                               
   End                              

 If @VSST_ORDE_SERV = 'S'                              
   Begin                              
     Select @VSCO_ORDE_DCGA = NullIf(Rtrim(CO_ORDE_DCGA), '')             
     From   TMPARA_CONT                              
     Where  CO_EMPR = @ISCO_EMPR                               
   End                              
                              
 Select @VSST_AUXI_EMPR = 'N' 
 Select @VSST_ORDE_SERV = 'N'                                                           
 Select @VSCO_CNTA_PERD = t1.CO_CNTA_EMPR,                              
     @VSST_AUXI_EMPR = t2.ST_AUXI_EMPR,
     @VSST_ORDE_SERV = t2.ST_ORDE_SERV  
 From TTIDEN_CNTA t1, TMPLAN_ANNO t2                              
 Where t1.CO_EMPR = @ISCO_EMPR                               
 And t1.NU_CNTB_EMPR = @INNU_CNTB_EMPR                               
 And t1.ID_CNTA = @VSID_PERD_CAMB                              
 And t2.CO_EMPR = t1.CO_EMPR                              
 And t2.CO_CNTA_EMPR = t1.CO_CNTA_EMPR                              
                              
 If @VSST_AUXI_EMPR = 'S'                              
   Begin                              
     Select @VSTI_AUXI_DCPE = NullIf(Rtrim(TI_AUXI_DCPE), ''),                              
            @VSCO_AUXI_DCPE = NullIf(Rtrim(CO_AUXI_DCPE), '')                              
     From TMPARA_CONT                              
     Where CO_EMPR = @ISCO_EMPR                               
   End                        

 If @VSST_ORDE_SERV = 'S'                              
   Begin                              
     Select @VSCO_ORDE_DCPE = NullIf(Rtrim(CO_ORDE_DCPE), '')             
     From   TMPARA_CONT                              
     Where  CO_EMPR = @ISCO_EMPR                               
   End                                    
                              
---- Si hay amarre con Cuentas de Dif De cambio en la TMPLAN_EMPR. Toma esas cuentas------------                             
 Select @VSCO_GANA_DIFE = Ltrim(Rtrim(IsNull(CO_GANA_DIFE,''))),                              
        @VSCO_PERD_DIFE = Ltrim(Rtrim(IsNull(CO_PERD_DIFE,'')))                              
 From  TMPLAN_EMPR                              
 Where CO_EMPR = @ISCO_EMPR                              
 And   CO_CNTA_EMPR = @ISCO_CNTA_EMPR                              
                              
 If @VSCO_GANA_DIFE <> '' And @VSCO_PERD_DIFE <> ''                              
   Begin                              
     Select @VSCO_CNTA_GANA = @VSCO_GANA_DIFE                    
     Select @VSCO_CNTA_PERD = @VSCO_PERD_DIFE                              
   End                              
                              
/*Seccion para cuentAs que tengan Auxiliar */                              
 Select @CNIM_ORIG_SALD = 0           
 Select @CNIM_SOLE_SALD = 0                              
 Select @VNIM_ORIG_MVTO = 0                              
 Select @VNIM_SOLE_MVTO = 0                              
 Select @VNTO_CNTA_GANA = 0                              
 Select @VNTO_CNTA_PERD = 0                              
 Select @VNTO_GANA_PEND = 0                              
 Select @VNTO_PERD_PEND = 0                              
 Select @VNTO_SALD_ORIG = 0                               
 Select @VNTO_SALD_SOLES  = 0                           
 Select @VNTO_AJUS = 0                              
                               
 Select @VSST_FLAG = 'N'  
                   
 Declare CU_TXMVTO_CNTB_I32_1 Cursor                              
 For                               
   Select   TI_DOCU, NU_DOCU, Min(FE_DOCU), TI_AUXI_EMPR, CO_AUXI_EMPR,                            
     Isnull(SUM( ( ROUND(((ASCII(TI_OPER)/67)* Isnull(IM_MVTO_ORIG, 0)),2) - ROUND(( (65/ASCII(TI_OPER))* Isnull(IM_MVTO_ORIG, 0) ),2))), 0),                              
     Isnull(SUM( ( ROUND(((ASCII(TI_OPER)/67)* Isnull(IM_MVTO_CNTB, 0)),2) - ROUND(( (65/ASCII(TI_OPER))* Isnull(IM_MVTO_CNTB, 0) ),2))), 0),                             
     Min(FE_ASTO_CNTB), Min(FE_DOCU_VENC),NullIf(Rtrim(Max(CO_ORDE_SERV)),'')                                
   From #TWMVTO_CNT1
   Where NU_DOCU = @ISNU_DOCU            
   And TI_DOCU = @ISTI_DOCU                               
   And CO_AUXI_EMPR = @ISCO_AUXI_EMPR                               
   And TI_AUXI_EMPR = @ISTI_AUXI_EMPR                
   Group By TI_AUXI_EMPR, CO_AUXI_EMPR, TI_DOCU, NU_DOCU
---   Order By TI_AUXI_EMPR, CO_AUXI_EMPR, TI_DOCU, NU_DOCU
                              
 Open CU_TXMVTO_CNTB_I32_1                              
 Fetch CU_TXMVTO_CNTB_I32_1 Into @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR,                               
 @CNIM_ORIG_SALD, @CNIM_SOLE_SALD, @CDFE_ASTO_0001, @CDFE_DOCU_VENC,@CSCO_ORDE_SERV             
                            
 While @@Fetch_status = 0                              
   Begin                              
                            
 -- EVALUA QUE SOLO GRABE PARA LAS CANCELACIONES YA QUE SI ES EL MISMO DIA NO HAY DIF DE CAMBIO                             
 If (@CDFE_ASTO_0001 != @IDFE_ASTO_CNTB) Or (Abs(@CNIM_SOLE_SALD) > 0)    
 Begin                             
                            
/*-----FIN CALCULO FACTOR DE CAMBIO -----------------*/                            
                            
     Select @VNTO_SALD_ORIG = 0                              
     Select @VNTO_SALD_SOLES  = 0                              
     Select @VNTO_AJUS = 0                              
     Select @VNTO_SALD_ORIG = ROUND(@CNIM_ORIG_SALD,2)                              
     Select @VNTO_SALD_SOLES  = ROUND(@CNIM_SOLE_SALD,2)                              
                              
     Select @VNTO_AJUS = ROUND(@VNTO_SALD_ORIG,2) - ROUND(@VNTO_SALD_SOLES,2)                              
                           
                
     If @VNTO_AJUS != 0.00                              
       Begin                               
         If( @VNTO_SALD_ORIG > 0.00 ) And ( @VNTO_SALD_SOLES > 0.00 )                               
           Begin                                 
             Select @VNTO_AJUS = ROUND(@VNTO_SALD_SOLES,2) - ROUND(@VNTO_SALD_ORIG,2)                              
                                    
             If @VNTO_AJUS > 0.00                              
               Begin                                
                              
                  -- @IDFE_ASTO_CNTB EL LUGAR DE  @VDFE_VOUC                              
                 Select @VNTO_PERD_PEND = @VNTO_PERD_PEND + ROUND(@VNTO_AJUS,2)                              
                 /*Comentario : Insercion del Asiento de Ajuste*/                              
 Insert Into TXMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB,                              
                 NU_ANNO, NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR,                              
                 CO_AUXI_EMPR, TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER,                               
                 IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB,                               
   FA_CAMB_DIAR, CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG, NU_SECU_ORIG, CO_CNTA_ORIG, FE_DOCU_VENC,          
   ST_DIFE_MAYO, CO_USUA_MODI, FE_USUA_MODI, CO_USUA_CREA, FE_USUA_CREA,CO_ORDE_SERV)          
                 Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO,                              
                 @INNU_MESE, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @ISCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                              
                 @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, 'PAC', @VSCO_MONE_CNTB, 1.000000,                              
                 'ABO', 0.00, @VNTO_AJUS, 'AJUST x DIF.CAMBIO', 'APR','  ', 'N', 'N', 'S', 1.000000,                           
      @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @ISNU_ASTO, @INNU_SECU, @ISCO_CNTA_EMPR, @CDFE_DOCU_VENC,          
      @ISST_DIFE_MAYO, @ISCO_USUA , @IDFE_USUA, @ISCO_USUA, @IDFE_USUA,@CSCO_ORDE_SERV  )      
                 If @@ERROR != 0                               
     Begin                               
                     Close CU_TXMVTO_CNTB_I32_1                              
           Deallocate CU_TXMVTO_CNTB_I32_1                              
                     Rollback Tran                              
                     Return                              
                   End                              
       Select @VNNU_SECU = @VNNU_SECU + 1                              
               End /* If @VNTO_AJUS > 0 */                              
                              
             If @VNTO_AJUS < 0.00                              
               Begin                               
      /*Comentario : Insercion del Asiento de Ajuste*/                              
                 Insert Into TXMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB,                              
      NU_ANNO, NU_MESE, NU_ASTO, NU_SECU,FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR,                              
                 CO_AUXI_EMPR, TI_DOCU, NU_DOCU,  FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER,                              
                 IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB,                              
                 FA_CAMB_DIAR, CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG, NU_SECU_ORIG, CO_CNTA_ORIG, FE_DOCU_VENC,          
   ST_DIFE_MAYO, CO_USUA_MODI, FE_USUA_MODI, CO_USUA_CREA, FE_USUA_CREA,CO_ORDE_SERV)          
                 Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO,                              
                 @INNU_MESE, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @ISCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                              
                 @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU,'PAC', @VSCO_MONE_CNTB, 1.000000,                               
                 'CAR', 0.00, abs(@VNTO_AJUS), 'AJUST x DIF.CAMBIO','APR', '  ', 'N', 'N', 'S', 1.000000,                          
   @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @ISNU_ASTO, @INNU_SECU, @ISCO_CNTA_EMPR, @CDFE_DOCU_VENC,          
   @ISST_DIFE_MAYO, @ISCO_USUA , @IDFE_USUA, @ISCO_USUA, @IDFE_USUA,@CSCO_ORDE_SERV  )      
                 If @@ERROR != 0                              
                   Begin                               
                     Close CU_TXMVTO_CNTB_I32_1                              
                     Deallocate CU_TXMVTO_CNTB_I32_1               
                     Rollback Tran                               
                     Return                              
                   End                              
                 Select @VNNU_SECU = @VNNU_SECU + 1                              
                 Select @VNTO_GANA_PEND = @VNTO_GANA_PEND - abs(ROUND(@VNTO_AJUS,2))                              
               End /* If @VNTO_AJUS < 0 */                              
           End  /* If( @VNTO_SALD_ORIG > 0 ) And ( @VNTO_SALD_SOLES > 0 ) */                              
                                 
         If( @VNTO_SALD_ORIG > 0.00 ) And ( @VNTO_SALD_SOLES < 0.00 )                              
           Begin         
             Select @VNTO_AJUS = abs(ROUND(@VNTO_SALD_SOLES,2)) + ROUND(@VNTO_SALD_ORIG,2)                              
             If @VNTO_AJUS > 0.00                              
               Begin                              
                 /*Comentario : Insercion del Asiento de Ajuste */                    
                 Insert Into TXMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB,                              
                 NU_ANNO, NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR,                              
                 CO_AUXI_EMPR, TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER,                              
                 IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB,                                
                 FA_CAMB_DIAR, CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG, NU_SECU_ORIG, CO_CNTA_ORIG, FE_DOCU_VENC,          
   ST_DIFE_MAYO, CO_USUA_MODI, FE_USUA_MODI, CO_USUA_CREA, FE_USUA_CREA,CO_ORDE_SERV)          
                 Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO,        
                 @INNU_MESE, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @ISCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                              
                 @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, 'PAC', @VSCO_MONE_CNTB,                              
                 1.000000, 'CAR', 0.00, @VNTO_AJUS, 'AJUST x DIF.CAMBIO', 'APR', '  ', 'N', 'N', 'S', 1.000000,                           
      @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @ISNU_ASTO, @INNU_SECU, @ISCO_CNTA_EMPR, @CDFE_DOCU_VENC,           
   @ISST_DIFE_MAYO, @ISCO_USUA , @IDFE_USUA, @ISCO_USUA, @IDFE_USUA,@CSCO_ORDE_SERV  )      
                 If @@ERROR != 0                                
                   Begin                               
                     Close CU_TXMVTO_CNTB_I32_1                              
                     Deallocate CU_TXMVTO_CNTB_I32_1                              
             Rollback Tran                                                                                                                                                                                                   
               Return                              
                   End                              
                 Select @VNNU_SECU = @VNNU_SECU + 1                              
                 Select @VNTO_GANA_PEND = @VNTO_GANA_PEND - ROUND(@VNTO_AJUS,2)                              
               End /* If @VNTO_AJUS > 0 */     
                                       
             If @VNTO_AJUS < 0.00                              
          Begin                              
               Select @VNTO_PERD_PEND = @VNTO_PERD_PEND + abs(ROUND(@VNTO_AJUS,2))                              
                 /*Comentario : Insercion del Asiento de Ajuste*/                              
                 Insert Into TXMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB,                              
       NU_ANNO, NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR,                              
  CO_AUXI_EMPR, TI_DOCU, NU_DOCU,FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER,                              
                 IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB,                                
                 FA_CAMB_DIAR, CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG, NU_SECU_ORIG, CO_CNTA_ORIG, FE_DOCU_VENC,          
   ST_DIFE_MAYO, CO_USUA_MODI, FE_USUA_MODI, CO_USUA_CREA, FE_USUA_CREA,CO_ORDE_SERV)          
                 Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO,                              
                 @INNU_MESE, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @ISCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                              
                 @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU,'PAC', @VSCO_MONE_CNTB, 1.000000,                              
                 'ABO', 0.00, abs(@VNTO_AJUS), 'AJUST x DIF.CAMBIO', 'APR','  ', 'N', 'N', 'S', 1.000000,                           
      @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @ISNU_ASTO, @INNU_SECU, @ISCO_CNTA_EMPR, @CDFE_DOCU_VENC,          
   @ISST_DIFE_MAYO, @ISCO_USUA , @IDFE_USUA, @ISCO_USUA, @IDFE_USUA,@CSCO_ORDE_SERV  )      
                 If @@ERROR != 0                                   
                   Begin                               
                     Close CU_TXMVTO_CNTB_I32_1                              
                     Deallocate CU_TXMVTO_CNTB_I32_1                              
                     Rollback Tran                               
                     Return                              
           End 
                 Select @VNNU_SECU = @VNNU_SECU + 1                              
               End /* If @VNTO_AJUS < 0 */                              
           End /*If( @VNTO_SALD_ORIG > 0 ) And ( @VNTO_SALD_SOLES < 0 ) */                              
                  
         If( @VNTO_SALD_ORIG < 0.00 ) And ( @VNTO_SALD_SOLES > 0.00 )                              
           Begin                              
             Select @VNTO_AJUS =  (0.00 - ROUND(@VNTO_SALD_SOLES,2)) + ROUND(@VNTO_SALD_ORIG,2)                              
             If @VNTO_AJUS > 0.00                              
               Begin                              
               /*Comentario : Insercion del Asiento de Ajuste*/                              
               Insert Into TXMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO,                              
               NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,                        
               TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG, IM_MVTO_CNTB,                              
               DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR,                          
               CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG, NU_SECU_ORIG, CO_CNTA_ORIG, FE_DOCU_VENC,       
               ST_DIFE_MAYO, CO_USUA_MODI, FE_USUA_MODI, CO_USUA_CREA, FE_USUA_CREA,CO_ORDE_SERV)      
               Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO,                              
               @INNU_MESE, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @ISCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                              
               @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, 'PAC', @VSCO_MONE_CNTB, 1.000000,       
               'CAR', 0.00, @VNTO_AJUS, 'AJUST x DIF.CAMBIO', 'APR', '  ', 'N', 'N', 'S', 1.000000,                           
               @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @ISNU_ASTO, @INNU_SECU, @ISCO_CNTA_EMPR, @CDFE_DOCU_VENC,           
        @ISST_DIFE_MAYO, @ISCO_USUA , @IDFE_USUA, @ISCO_USUA, @IDFE_USUA,@CSCO_ORDE_SERV  )      
               If @@ERROR != 0                                   
                 Begin                               
                   Close CU_TXMVTO_CNTB_I32_1                              
             Deallocate CU_TXMVTO_CNTB_I32_1                              
                   Rollback Tran                               
                   Return                              
                 End                              
               Select @VNNU_SECU = @VNNU_SECU + 1                              
               Select @VNTO_GANA_PEND = @VNTO_GANA_PEND - ROUND(@VNTO_AJUS,2)                                  
             End /* If @VNTO_AJUS > 0 */                              
                              
           If @VNTO_AJUS < 0.00                              
             Begin                              
               Select @VNTO_PERD_PEND = @VNTO_PERD_PEND + abs(ROUND(@VNTO_AJUS,2))                              
               /*Comentario : Insercion del Asiento de Ajuste*/                              
               Insert Into TXMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO,           
               NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,                              
               TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG, IM_MVTO_CNTB,                              
               DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR,                           
               CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG, NU_SECU_ORIG, CO_CNTA_ORIG, FE_DOCU_VENC,       
               ST_DIFE_MAYO, CO_USUA_MODI, FE_USUA_MODI, CO_USUA_CREA, FE_USUA_CREA,CO_ORDE_SERV) 
               Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO,                              
               @INNU_MESE, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @ISCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                              
               @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, 'PAC', @VSCO_MONE_CNTB, 1.000000,                              
               'ABO', 0.00, abs(@VNTO_AJUS), 'AJUST x DIF.CAMBIO', 'APR', '  ', 'N', 'N', 'S', 1.000000,                           
               @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @ISNU_ASTO, @INNU_SECU, @ISCO_CNTA_EMPR, @CDFE_DOCU_VENC,       
               @ISST_DIFE_MAYO, @ISCO_USUA , @IDFE_USUA, @ISCO_USUA, @IDFE_USUA,@CSCO_ORDE_SERV  )      
               If @@ERROR != 0                                   
                 Begin           
                   Close CU_TXMVTO_CNTB_I32_1                              
           Deallocate CU_TXMVTO_CNTB_I32_1                              
                   Rollback Tran                               
                   Return                              
                 End                              
               Select @VNNU_SECU = @VNNU_SECU + 1                              
             End /* If @VNTO_AJUS < 0      */                              
         End  /*If( @VNTO_SALD_ORIG < 0 ) And ( @VNTO_SALD_SOLES > 0 )  */                              
                              
       If( @VNTO_SALD_ORIG < 0.00 ) And ( @VNTO_SALD_SOLES < 0.00 )                              
         Begin                              
           Select @VNTO_AJUS =  ROUND(@VNTO_SALD_SOLES,2) - ROUND(@VNTO_SALD_ORIG,2)                              
           If @VNTO_AJUS > 0.00                              
             Begin 
               Select @VNTO_PERD_PEND = @VNTO_PERD_PEND + ROUND(@VNTO_AJUS,2)                              
               /*Comentario : Insercion del Asiento de Ajuste*/                              
               Insert Into TXMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO,                              
         NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,                              
               TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG,                              
               IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR,      
               CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG, NU_SECU_ORIG, CO_CNTA_ORIG, FE_DOCU_VENC,       
               ST_DIFE_MAYO, CO_USUA_MODI, FE_USUA_MODI, CO_USUA_CREA, FE_USUA_CREA,CO_ORDE_SERV)             
               Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO,                              
               @INNU_MESE, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @ISCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                              
               @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, 'PAC', @VSCO_MONE_CNTB, 1.000000,                              
               'ABO', 0.00, @VNTO_AJUS, 'AJUST x DIF.CAMBIO', 'APR',  '  ', 'N', 'N', 'S', 1.000000,                           
               @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @ISNU_ASTO, @INNU_SECU, @ISCO_CNTA_EMPR, @CDFE_DOCU_VENC,       
               @ISST_DIFE_MAYO, @ISCO_USUA , @IDFE_USUA, @ISCO_USUA, @IDFE_USUA,@CSCO_ORDE_SERV  )      
               If @@ERROR != 0                                   
               Begin                               
                 Close CU_TXMVTO_CNTB_I32_1                              
                 Deallocate CU_TXMVTO_CNTB_I32_1                              
                 Rollback Tran                               
                 Return                              
               End                           
               Select @VNNU_SECU = @VNNU_SECU + 1                              
             End /* If @VNTO_AJUS > 0 */                              
                              
           If @VNTO_AJUS < 0.00                              
             Begin                              
               /*Comentario : Insercion del Asiento de Ajuste*/                              
           Insert Into TXMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO,                              
               NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,                              
               TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG,                              
               IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR,                           
               CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG, NU_SECU_ORIG, CO_CNTA_ORIG, FE_DOCU_VENC,       
             ST_DIFE_MAYO, CO_USUA_MODI, FE_USUA_MODI, CO_USUA_CREA, FE_USUA_CREA,CO_ORDE_SERV)             
               Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO,                              
               @INNU_MESE, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @ISCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                              
               @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, 'PAC', @VSCO_MONE_CNTB, 1.000000,                              
               'CAR', 0.00, abs(@VNTO_AJUS), 'AJUST x DIF.CAMBIO', 'APR', '  ', 'N', 'N', 'S', 1.000000,                           
               @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @ISNU_ASTO, @INNU_SECU, @ISCO_CNTA_EMPR, @CDFE_DOCU_VENC,       
               @ISST_DIFE_MAYO, @ISCO_USUA , @IDFE_USUA, @ISCO_USUA, @IDFE_USUA,@CSCO_ORDE_SERV  )      
               If @@ERROR != 0                                   
Begin                               
                   Close CU_TXMVTO_CNTB_I32_1                            
                   Deallocate CU_TXMVTO_CNTB_I32_1                              
                   Rollback Tran                               
                   Return                              
                 End                              
               Select @VNNU_SECU = @VNNU_SECU + 1                            
               Select @VNTO_GANA_PEND = @VNTO_GANA_PEND - abs(ROUND(@VNTO_AJUS,2))                                
            End /* If @VNTO_AJUS < 0      */                              
         End  /*If( @VNTO_SALD_ORIG < 0 ) And ( @VNTO_SALD_SOLES > 0 )  */                                    
                              
       If( @VNTO_SALD_ORIG = 0.00 ) And ( @VNTO_SALD_SOLES > 0.00 )                              
         Begin                              
           Select @VNTO_AJUS =  ROUND(@VNTO_SALD_SOLES,2)                              
           If @VNTO_AJUS > 0.00                              
             Begin                              
             Select @VNTO_CNTA_PERD = @VNTO_CNTA_PERD + ROUND(@VNTO_AJUS,2)                                  
               /*Comentario : Insercion del Asiento de Ajuste*/                              
               Insert Into TXMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO,                              
               NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,                              
               TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG,                              
               IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR,                           
               CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG, NU_SECU_ORIG, CO_CNTA_ORIG, FE_DOCU_VENC,       
               ST_DIFE_MAYO, CO_USUA_MODI, FE_USUA_MODI, CO_USUA_CREA, FE_USUA_CREA,CO_ORDE_SERV)      
               Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO,                              
               @INNU_MESE, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @ISCO_CNTA_EMPR, @CSTI_AUXI_EMPR,         
               @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, 'PAC', @VSCO_MONE_CNTB, 1.000000,                              
               'ABO', 0.00, @VNTO_AJUS, 'AJUST x DIF.CAMBIO', 'APR', '  ', 'N', 'N', 'S',1.000000,                           
               @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @ISNU_ASTO, @INNU_SECU, @ISCO_CNTA_EMPR, @CDFE_DOCU_VENC,       
               @ISST_DIFE_MAYO, @ISCO_USUA , @IDFE_USUA, @ISCO_USUA, @IDFE_USUA ,@CSCO_ORDE_SERV )      
               If @@ERROR != 0                                   
                 Begin                               
                   Close CU_TXMVTO_CNTB_I32_1                              
                   Deallocate CU_TXMVTO_CNTB_I32_1                              
                   Rollback Tran                               
                   Return                              
          End                              
               Select @VNNU_SECU = @VNNU_SECU + 1                              
             End                              
         End /*If( @VNTO_SALD_ORIG = 0 ) And ( @VNTO_SALD_SOLES > 0 )  */                               
                              
       If( @VNTO_SALD_ORIG = 0.00 ) And ( @VNTO_SALD_SOLES < 0.00 )                              
         Begin                              
           Select @VNTO_AJUS =  ROUND(@VNTO_SALD_SOLES,2)                              
           If @VNTO_AJUS < 0.00                              
             Begin                              
               /* Insercion del Asiento de Ajuste*/                              
               Insert Into TXMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO,                              
               NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,                              
               TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG,                              
               IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR,     
               CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG, NU_SECU_ORIG, CO_CNTA_ORIG, FE_DOCU_VENC,       
               ST_DIFE_MAYO, CO_USUA_MODI, FE_USUA_MODI, CO_USUA_CREA, FE_USUA_CREA,CO_ORDE_SERV)      
               Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO,                              
               @INNU_MESE, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @ISCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                              
               @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, 'PAC', @VSCO_MONE_CNTB, 1.000000,                              
               'CAR', 0.00, abs(@VNTO_AJUS), 'AJUST x DIF.CAMBIO', 'APR', '  ', 'N', 'N', 'S', 1.000000,                           
               @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @ISNU_ASTO, @INNU_SECU, @ISCO_CNTA_EMPR, @CDFE_DOCU_VENC,       
               @ISST_DIFE_MAYO, @ISCO_USUA , @IDFE_USUA, @ISCO_USUA, @IDFE_USUA ,@CSCO_ORDE_SERV )      
               If @@ERROR != 0                                   
                 Begin                               
                   Close CU_TXMVTO_CNTB_I32_1                              
                   Deallocate CU_TXMVTO_CNTB_I32_1                              
                 Rollback Tran                               
            Return                              
                 End                              
               Select @VNNU_SECU = @VNNU_SECU + 1                              
               Select @VNTO_CNTA_GANA = @VNTO_CNTA_GANA - abs(ROUND(@VNTO_AJUS,2))                           
             End                               
         End  /*If( @VNTO_SALD_ORIG < 0 ) And ( @VNTO_SALD_SOLES > 0 )  */                              
     End    /*If @VNTO_AJUS != 0 */                              
                            
 End /*FIN  -- EVALUA QUE SOLO GRABE PARA              CANCELACIONES */                            
                            
 Fetch CU_TXMVTO_CNTB_I32_1 Into @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR,                               
 @CNIM_ORIG_SALD, @CNIM_SOLE_SALD, @CDFE_ASTO_0001, @CDFE_DOCU_VENC,@CSCO_ORDE_SERV                                
                              
 End /* While @@Fetch_status =0 */                              
 Close CU_TXMVTO_CNTB_I32_1                              
 Deallocate CU_TXMVTO_CNTB_I32_1                              
                              
/* Insercion de cuenta de pTrdida en diferencia de cambio      */                              
 If @VNTO_CNTA_PERD != 0.00                              
   Begin                                    
     If @VNTO_CNTA_PERD > 0.00                              
       Begin                              
         Select @VSTI_OPER = 'CAR'                              
       End                      
     Else If @VNTO_CNTA_PERD < 0.00                              
       Begin                              
         Select @VSTI_OPER = 'ABO'                              
       End                              
                              
     /*Comentario : Insercion del Asiento de Ajuste*/                              
     Insert Into TXMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO, NU_MESE,                              
     NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR, TI_DOCU, NU_DOCU,                              
     FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB,                               
     NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR,                           
     CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG, NU_SECU_ORIG, CO_CNTA_ORIG,       
     ST_DIFE_MAYO, CO_USUA_MODI, FE_USUA_MODI, CO_USUA_CREA, FE_USUA_CREA,CO_ORDE_SERV)      
     Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO, @INNU_MESE,                              
     @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @VSCO_CNTA_PERD, @VSTI_AUXI_DCPE, @VSCO_AUXI_DCPE, NULL, NULL,                           
     NULL,'PAC', @VSCO_MONE_CNTB, 1.000000,  @VSTI_OPER, 0.00, abs(@VNTO_CNTA_PERD), 'AJUST x DIF.CAMBIO',                              
     'APR', '  ', 'N', 'N', 'S', 1.000000, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @ISNU_ASTO, @INNU_SECU,           
    @ISCO_CNTA_EMPR, @ISST_DIFE_MAYO, @ISCO_USUA , @IDFE_USUA, @ISCO_USUA, @IDFE_USUA,@VSCO_ORDE_DCPE )      
     If @@ERROR != 0                              
       Begin                               
         Rollback Tran                              
         Return                              
       End                              
     Select @VNNU_SECU = @VNNU_SECU + 1                              
   End                              
                              
/* Insercion de cuenta de pTrdida en diferencia de cambio Pendiente */                              
 If @VNTO_PERD_PEND != 0.00                              
   Begin                                    
     If @VNTO_PERD_PEND > 0.00                              
       Begin                              
         Select @VSTI_OPER = 'CAR'                              
       End                                      
     Else If @VNTO_PERD_PEND < 0.00                              
       Begin                              
         Select @VSTI_OPER = 'ABO'                              
       End                              
                              
     /*Comentario : Insercion del Asiento de Ajuste*/    
     Insert Into TXMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO, NU_MESE,                              
     NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR, TI_DOCU, NU_DOCU,                              
     FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB,                               
     NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR,                           
     CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG, NU_SECU_ORIG, CO_CNTA_ORIG,       
     ST_DIFE_MAYO, CO_USUA_MODI, FE_USUA_MODI, CO_USUA_CREA, FE_USUA_CREA,CO_ORDE_SERV)      
     Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO, @INNU_MESE,                              
     @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @VSCO_CNTA_PERD, @VSTI_AUXI_DCPE, @VSCO_AUXI_DCPE, NULL, NULL,                     
     NULL,'PAC', @VSCO_MONE_CNTB, 1.000000,  @VSTI_OPER, 0.00, abs(@VNTO_PERD_PEND), 'AJUST x DIF.CAMBIO',                              
     'APR', '  ', 'N', 'N', 'S', 1.000000,                           
     @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @ISNU_ASTO, @INNU_SECU, @ISCO_CNTA_EMPR,       
     @ISST_DIFE_MAYO, @ISCO_USUA , @IDFE_USUA, @ISCO_USUA, @IDFE_USUA ,@VSCO_ORDE_DCPE)      
     If @@ERROR != 0                              
     Begin                               
         Rollback Tran                              
         Return                              
       End                              
     Select @VNNU_SECU = @VNNU_SECU + 1                               
   End                              
                    
/* Insercion de cuenta de ganancia en diferencia de cambio */                              
 If @VNTO_CNTA_GANA != 0.00                              
   Begin                              
     If @VNTO_CNTA_GANA > 0.00                              
       Begin                              
         Select @VSTI_OPER = 'CAR'             
       End                                      
     Else If @VNTO_CNTA_GANA < 0.00                           
       Begin                              
         Select @VSTI_OPER = 'ABO'                              
       End                              
     /*Comentario :Insercion del Asiento de Ajuste*/                            
     Insert Into TXMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO,NU_MESE,                
     NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR, TI_DOCU, NU_DOCU,                              
     FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB,                              
     NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR,                           
     CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG, NU_SECU_ORIG, CO_CNTA_ORIG,       
     ST_DIFE_MAYO, CO_USUA_MODI, FE_USUA_MODI, CO_USUA_CREA, FE_USUA_CREA,CO_ORDE_SERV)      
     Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO, @INNU_MESE,                              
     @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @VSCO_CNTA_GANA, @VSTI_AUXI_DCGA, @VSCO_AUXI_DCGA, NULL, NULL,                              
     NULL,'PAC', @VSCO_MONE_CNTB, 1.000000,  @VSTI_OPER, 0.00, abs(@VNTO_CNTA_GANA), 'AJUST x DIF.CAMBIO',                              
     'APR', '  ', 'N', 'N', 'S', 1.000000,                           
     @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @ISNU_ASTO, @INNU_SECU, @ISCO_CNTA_EMPR,       
     @ISST_DIFE_MAYO, @ISCO_USUA , @IDFE_USUA, @ISCO_USUA, @IDFE_USUA,@VSCO_ORDE_DCGA )      
     If @@ERROR != 0                                   
       Begin                               
         Rollback Tran                               
         Return                              
       End                           
     Select @VNNU_SECU = @VNNU_SECU + 1              
   End                              
                              
/* Insercion de cuenta de ganancia en diferencia de cambio */                              
 If @VNTO_GANA_PEND != 0.00                              
   Begin                              
     If @VNTO_GANA_PEND > 0.00                              
       Begin                              
         Select @VSTI_OPER = 'CAR'                              
       End                                      
     Else If @VNTO_GANA_PEND < 0.00                              
       Begin                              
         Select @VSTI_OPER = 'ABO'                              
       End                              
     /*Comentario :Insercion del Asiento de Ajuste*/                              
     Insert Into TXMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO,NU_MESE,                              
     NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR, TI_DOCU, NU_DOCU,                              
     FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB,                              
     NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR,               
     CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG, NU_SECU_ORIG, CO_CNTA_ORIG,       
     ST_DIFE_MAYO, CO_USUA_MODI, FE_USUA_MODI, CO_USUA_CREA, FE_USUA_CREA,CO_ORDE_SERV)      
     Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO, @INNU_MESE,                              
     @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @VSCO_CNTA_GANA, @VSTI_AUXI_DCGA, @VSCO_AUXI_DCGA, NULL, NULL,                              
     NULL,'PAC', @VSCO_MONE_CNTB, 1.000000,  @VSTI_OPER, 0.00, abs(@VNTO_GANA_PEND), 'AJUST x DIF.CAMBIO',                              
     'APR', '  ', 'N', 'N', 'S', 1.000000,                           
     @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @ISNU_ASTO, @INNU_SECU, @ISCO_CNTA_EMPR,       
     @ISST_DIFE_MAYO, @ISCO_USUA , @IDFE_USUA, @ISCO_USUA, @IDFE_USUA,@VSCO_ORDE_DCGA )      
     If @@ERROR != 0                                   
       Begin                               
         Rollback Tran                               
         Return                              
       End                              
     Select @VNNU_SECU = @VNNU_SECU + 1                              
   End             
                    
                              
    If @VNTO_PERD_PEND != 0 Or @VNTO_CNTA_PERD != 0                             
      Select @VSCO_CNTA_AJUS = @VSCO_CNTA_PERD                            
                            
    If @VNTO_GANA_PEND != 0 Or @VNTO_CNTA_GANA != 0                             
      Select @VSCO_CNTA_AJUS = @VSCO_CNTA_GANA                            
                            
                
    -- LLAMA A GESTION EN CASO CTA DE PERDIDA X DIF CAMBIO TENGA AMARRE                            
    -- RESTA 1 PARA OBTENER EL SEC. DE CTA PERDIDA                
    Select @VNNU_SECU = @VNNU_SECU - 1                              
    Exec SP_TXMVTO_CNTB_I34 @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB,                              
    @ISCO_OPRC_CNTB, @INNU_ANNO, @INNU_MESE, @ISNU_ASTO, @VSCO_CNTA_AJUS, 'ORI', @VNNU_SECU, @ISCO_USUA,@IDFE_USUA                          
                        
End  /* FIN SI SALDO ES IGUAL A CERO */                                 
                        
Commit Transaction                              
Return                              
/*-------------------------------- Fin -----------------------------*/










GO
